﻿// ***********************************************************************
// Assembly         : AccesoDatos
// Author           : Diego
// Created          : 03-02-2014
//
// Last Modified By : Diego
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="AD_Usuarios.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// The ClasesAccesoDatos namespace.
/// </summary>
namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
    /// <summary>
    /// Class AD_Usuarios.
    /// </summary>
    public class AD_Usuarios
    {
        /// <summary>
        /// Ses the l_ usuario contrasena.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="objs">The objs.</param>
        /// <returns>MOD_Usuarios.</returns>
        public MOD_Usuarios SEL_UsuarioContrasena(SqlCommand comando, MOD_Usuarios objs)
        {
            try
            {
                string sp = "SP_SEL_UsuarioContrasena";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@usu_email", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@usu_contrasena", SqlDbType.VarChar));

                comando.Parameters[0].Value = objs.USU_email;
                comando.Parameters[1].Value = objs.USU_contrasena;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                MOD_Usuarios obj = new MOD_Usuarios();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    obj.USU_codusuario = Convert.ToInt32(dt.Rows[i]["USU_CODUSUARIO"]);
                    obj.USU_nombre = dt.Rows[i]["USU_NOMBRECOMPLETO"].ToString();
                    obj.USU_email = dt.Rows[i]["USU_EMAIL"].ToString();
                    obj.USU_contrasena = dt.Rows[i]["USU_CONTRASENA"].ToString();
                    obj.USU_cod_puesto = Convert.ToInt32(dt.Rows[i]["USU_CODPUESTO"]);//cambio
                }

                return obj;
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }



        // Crear usuarios

        /// <summary>
        /// Crs the e_ usuario.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="obj">The object.</param>
        public void CRE_Usuario(SqlCommand comando, MOD_Usuarios obj)
        {
            try
            {
                string sp = "SP_CRE_Usuario";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@USU_nombre", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_primapellido", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_segapellido", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_telefono", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_contrasena", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_direccion", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_email", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_CODPUESTO", SqlDbType.Int));//cambio
                comando.Parameters.Add(new SqlParameter("@USU_CODESTADO", SqlDbType.Int));//cambio

                comando.Parameters[0].Value = obj.USU_nombre;
                comando.Parameters[1].Value = obj.USU_primapellido;
                comando.Parameters[2].Value = obj.USU_segapellido;
                comando.Parameters[3].Value = obj.USU_telefono;
                comando.Parameters[4].Value = obj.USU_contrasena;
                comando.Parameters[5].Value = obj.USU_direccion;
                comando.Parameters[6].Value = obj.USU_email;
                comando.Parameters[7].Value = obj.USU_cod_puesto;
                comando.Parameters[8].Value = obj.Estusu_codestado;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        //eliminar usuarios

        /// <summary>
        /// Des the l_ usuario.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="Codigo">The codigo.</param>
        public void DEL_Usuario(SqlCommand comando, int Codigo)
        {
            try
            {
                string sp = "SP_DEL_Usuario";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@USU_codusuario", SqlDbType.Int));

                comando.Parameters[0].Value = Codigo;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        //actuaizar usuario

        /// <summary>
        /// Ups the d_ usuario.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="obj">The object.</param>
        public void UPD_Usuario(SqlCommand comando, MOD_Usuarios obj)
        {
            try
            {
                string sp = "SP_UPD_Usuario";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@USU_codusuario", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@USU_nombre", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_primapellido", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_segapellido", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_telefono", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_contrasena", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_direccion", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_email", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@USU_CODPUESTO", SqlDbType.Int));//puesto
                comando.Parameters.Add(new SqlParameter("@USU_CODESTADO", SqlDbType.Int));//puesto

                comando.Parameters[0].Value = obj.USU_codusuario;
                comando.Parameters[1].Value = obj.USU_nombre;
                comando.Parameters[2].Value = obj.USU_primapellido;
                comando.Parameters[3].Value = obj.USU_segapellido;
                comando.Parameters[4].Value = obj.USU_telefono;
                comando.Parameters[5].Value = obj.USU_contrasena;
                comando.Parameters[6].Value = obj.USU_direccion;
                comando.Parameters[7].Value = obj.USU_email;
                comando.Parameters[8].Value = obj.USU_cod_puesto;
                comando.Parameters[9].Value = obj.Estusu_codestado;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }


        /// <summary>
        /// Ses the l_ grid_ usuarios.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <returns>List{MOD_Usuarios}.</returns>
        public List<MOD_Usuarios> SEL_Grid_Usuarios(SqlCommand comando)
        {
            try
            {
                string sp = "SP_SEL_Grid_Usuarios";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<MOD_Usuarios> lista = new List<MOD_Usuarios>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    MOD_Usuarios obj = new MOD_Usuarios();
                    obj.USU_codusuario = Convert.ToInt32(dt.Rows[i]["USU_CODUSUARIO"]);
                    obj.USU_nombre = dt.Rows[i]["USU_NOMBRECOMPLETO"].ToString();
                    obj.USU_email = dt.Rows[i]["USU_EMAIL"].ToString();
                    obj.PUE_Descripcion = dt.Rows[i]["PUE_NOMBRE"].ToString();

                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// Ses the l_ list a_ usuarioparticipante.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="USU_CODUSUARIO">The us u_ codusuario.</param>
        /// <returns>List{MOD_Usuarios}.</returns>
        public List<MOD_Usuarios> SEL_LISTA_USUARIOPARTICIPANTE(SqlCommand comando, int USU_CODUSUARIO)
        {
            try
            {
                string sp = "SP_SEL_Lista_Usuariosparticipantes";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@USU_CODADMIN", SqlDbType.Int));


                comando.Parameters[0].Value = USU_CODUSUARIO;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<MOD_Usuarios> lista = new List<MOD_Usuarios>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    MOD_Usuarios obj = new MOD_Usuarios();
                    obj.USU_codusuario = Convert.ToInt32(dt.Rows[i]["USU_CODUSUARIO"]);
                    obj.USU_nombre = dt.Rows[i]["USU_NOMBRECOMPLETO"].ToString();
                  

                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }


            //trae info de usuario para editar
        /// <summary>
        /// Ses the l_ usuario by identifier.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="USU_CODUSUARIO">The us u_ codusuario.</param>
        /// <returns>MOD_Usuarios.</returns>
            public MOD_Usuarios SEL_UsuarioByID(SqlCommand comando, int USU_CODUSUARIO)
            {
                try
                {
                    string sp = "SP_SEL_UsuarioByID";

                    comando.CommandType = CommandType.StoredProcedure;
                    comando.CommandText = sp;
                    comando.Parameters.Clear();

                    comando.Parameters.Add(new SqlParameter("@USU_CODUSUARIO", SqlDbType.Int));


                    comando.Parameters[0].Value = USU_CODUSUARIO;


                    IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                    DataSet ds = new DataSet();
                    da.Fill(ds);

                    DataTable dt = ds.Tables[0];
                    MOD_Usuarios obj = new MOD_Usuarios();

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        obj.USU_codusuario = Convert.ToInt32(dt.Rows[i]["USU_CODUSUARIO"]);
                        obj.USU_nombre = dt.Rows[i]["USU_NOMBRE"].ToString();
                        obj.USU_primapellido = dt.Rows[i]["USU_PRIMAPELLIDO"].ToString();
                        obj.USU_segapellido = dt.Rows[i]["USU_SEGAPELLIDO"].ToString();
                        obj.USU_telefono = dt.Rows[i]["USU_TELEFONO"].ToString();
                        obj.USU_contrasena = dt.Rows[i]["USU_CONTRASENA"].ToString();
                        obj.USU_direccion = dt.Rows[i]["USU_DIRECCION"].ToString();
                        obj.USU_email = dt.Rows[i]["USU_EMAIL"].ToString();
                        obj.USU_cod_puesto = Convert.ToInt32(dt.Rows[i]["USU_CODPUESTO"]);
                        obj.Estusu_codestado = Convert.ToInt32(dt.Rows[i]["USU_CODESTADO"]);
                        obj.USU_nombrecompleto = dt.Rows[i]["USU_NOMBRECOMPLETO"].ToString();

                    }

                    return obj;


                }
                catch (Exception exc)
                {
                    throw exc;
                }
            }

            /// <summary>
            /// Ses the l_ estusuario.
            /// </summary>
            /// <param name="comando">The comando.</param>
            /// <returns>List{MOD_Usuarios}.</returns>
            public List<MOD_Usuarios> SEL_ESTUSUARIO(SqlCommand comando)
            {
                try
                {
                    string sp = "SP_SEL_ESTUSUARIO";

                    comando.CommandType = CommandType.StoredProcedure;
                    comando.CommandText = sp;
                    comando.Parameters.Clear();

                    IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                    DataSet ds = new DataSet();
                    da.Fill(ds);

                    DataTable dt = ds.Tables[0];
                    List<MOD_Usuarios> lista = new List<MOD_Usuarios>();

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        MOD_Usuarios obj = new MOD_Usuarios();
                        obj.Estusu_codestado = Convert.ToInt32(dt.Rows[i]["ESTUSU_CODESTADO"]);
                        obj.Estusu_nombre = dt.Rows[i]["ESTUSU_NOMBRE"].ToString();


                        lista.Add(obj);
                    }


                    return lista;

                }
                catch (Exception exc)
                {
                    throw exc;
                }
            }

        //selecciona usuario x email

            /// <summary>
            /// Ses the l_ usuario by email.
            /// </summary>
            /// <param name="comando">The comando.</param>
            /// <param name="USU_EMAIL">The us u_ email.</param>
            /// <returns>System.Int32.</returns>
            public int SEL_UsuarioByEmail(SqlCommand comando, string USU_EMAIL)
            {
                try
                {
                    string sp = "SEL_UsuarioByEmail";
                    int cant_usu = 0;
                    comando.CommandType = CommandType.StoredProcedure;
                    comando.CommandText = sp;
                    comando.Parameters.Clear();

                    comando.Parameters.Add(new SqlParameter("@USU_EMAIL", SqlDbType.VarChar));


                    comando.Parameters[0].Value = USU_EMAIL;


                    IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                    DataSet ds = new DataSet();
                    da.Fill(ds);

                    DataTable dt = ds.Tables[0];
                    MOD_Usuarios obj = new MOD_Usuarios();

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        cant_usu = Convert.ToInt32(dt.Rows[i]["USU_CANT"]);
                     
                        
                    }

                    return cant_usu;


                }
                catch (Exception exc)
                {
                    throw exc;
                }
            }

            //selecciona Puesto

            /// <summary>
            /// Ses the l_ puesto.
            /// </summary>
            /// <param name="comando">The comando.</param>
            /// <returns>List{MOD_Usuarios}.</returns>
            public List<MOD_Usuarios> SEL_PUESTO(SqlCommand comando)
            {
                try
                {
                    string sp = "SP_SEL_PUESTO";

                    comando.CommandType = CommandType.StoredProcedure;
                    comando.CommandText = sp;
                    comando.Parameters.Clear();

                    IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                    DataSet ds = new DataSet();
                    da.Fill(ds);

                    DataTable dt = ds.Tables[0];
                    List<MOD_Usuarios> lista = new List<MOD_Usuarios>();

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        MOD_Usuarios obj = new MOD_Usuarios();
                        obj.PUE_Cod_Puesto = Convert.ToInt32(dt.Rows[i]["PUE_CODPUESTO"]);
                        obj.PUE_Descripcion = dt.Rows[i]["PUE_NOMBRE"].ToString();


                        lista.Add(obj);
                    }


                    return lista;

                }
                catch (Exception exc)
                {
                    throw exc;
                }
            }

    }
}
